2

MongoDB 系列文章:

在介绍 MongoDB 的具体操作和使用之前,有必要介绍一些 MongoDB 的基本概念,有了这些基础和知识铺垫,后面的操作,才会掌握的更扎实,理解的更透彻。

MongoDB 数据库跟关系数据库不太一样,有三个基本概念:文档,集合和库。分别对应于关系数据库的记录、表和库。库一定有一个磁盘文件来对应。MongoDB 数据库把文档存在集合中。集合中的文档,不需要有相同的结构,每个文档都可以有不同的结构。这使得 MongoDB 比传统的 RDBMS 更灵活,因为你不用预先定义结构。

文档是 MongoDB 的核心概念,文档是操作数据库的最小单元。首先,看看文档长啥样子吧。文档其实就是 JavaScript 中的对象字面量,也就是键值对。正是因为 MongoDB 的文档就是 JavaScript 中的对象字面量,所以,MongoDB 才成为 Node.js 应用开发的首选数据库系统,因为他非常简单和直观,非常容易上手。

下面通过几个文档的例子,来介绍文档的规则:

  • 文档的键/值对是有序的,内容相同,但顺序不同的键/值对是不同的文档;

    {
      "greeting": "hello world", 
      "foo": 3
    }
    {
      "foo": 3, 
      "greeting": "hello world"
    }
  • 文档中的值不仅可以使双引号的字符串,还可以是其他数据类型,例如:整数、null、布尔值、浮点数、二进制数据、数组,代码,等等,甚至可以是嵌入的文档;

    {
      "null": null,
      "boolean": true,
      "integer": 32,
      "string": "hello",
      "float": 3.14,
      "date": new Date(),
      "code": function() { console.log('hello'); },
      "array": [1, 3, 5, 7]
    }
  • 文档的键是字符串,除了极少数情况,键可以使任意 utf-8 字符;
  • 键不能含 0(空字符),这个字符用来表示键的结尾;
  • . 和 $ 有特别的意义,一般情况下不建议使用;
  • 下划线开头的键是保留的,一般情况下不建议使用;
  • 文档中的键/值不但区分类型,还区分大小写;

    {
      "foo": 3
    }
    { 
      "foo": "3" 
    }
    
    { 
      "foo": 3
    }
    { 
      "Foo": 3 
    }
  • 文档中不能用重复的键;

    {
      "greeting": "hello world",
      "greeting": "hello MongoDB"
    }

下面介绍一下基本的 Shell 操作,在 MongoDB 的数据库中完成文档的增、删、改、查四个操作。等你了解这这些命令或者函数,你再尝试在 JavaScript 脚本代码中操作数据库,你会发现这种 API 非常容易上手。

$ mongo

> use todo   # 切换数据库,如果数据库不存在则创建,有则切换
> db         # 查看当前的数据库

> db.todo.insert(data) # 在 todo 集合中插入数据,数据是上面介绍的一个合法的文档

# 例如:
> db.todo.insert({"item": "play football"})

> db.todo.find()       # 返回集合中的所有文档
> db.todo.findOne()    # 返回集合中的一个文档

> db.todo.update(old, new)  # 将旧文档换成新文档

> db.todo.remove(old)       # 删除旧文档

更多的命令用法,请参考文档:MongoDB 基本操作

小结:

其实 Shell 的 API 和 JavaScript 编程的 API 完全相同,增、删、改、查,就是四个单词,insert, remove, update, find。

如果这个文章对你有用,请点赞并收藏!


王顶
1.2k 声望107 粉丝

学无止境